package com.ydd.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydd.constant.MessageConstant;
import com.ydd.dto.YddTagDto;
import com.ydd.dto.YddTagPageDto;
import com.ydd.entity.YddTag;
import com.ydd.mapper.YddTagMapper;
import com.ydd.result.Result;
import com.ydd.service.YddTagService;
import com.ydd.vo.YddTagVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;


/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zhangxiaojun
 * @since 2023-05-14
 */
@Service
public class YddTagServiceImpl extends ServiceImpl<YddTagMapper, YddTag> implements YddTagService {
    @Autowired
    private YddTagMapper yddTagMapper;


    //查询列表所有标签
    @Override
    public Result getLabel() {
        QueryWrapper<YddTag> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("1", "1");
        List<YddTag> yddTagList = yddTagMapper.selectList(queryWrapper);
        HashMap<String, String> map = new HashMap<>();
        for (YddTag yddTag : yddTagList) {
            String id = String.valueOf(yddTag.getId());
            String tagname = yddTag.getTagname();
            map.put(id, tagname);
        }
        return Result.success(map);
    }

    //修改标签
    @Override
    public boolean updateLabel(YddTag yddTag) {
        int rows = yddTagMapper.updateById(yddTag);
        return rows > 0;
    }

    /**
     * 根据id查询标签
     *
     * @param id
     * @return 标签详情对象
     */
    @Override
    public YddTagDto getLabelById(Long id) {
        return yddTagMapper.getLabelById(id);
    }

    /**
     * 根据id删除标签
     *
     * @param id
     * @return 返回删除结果
     */
    @Override
    public boolean deleteById(Long id) {
        return yddTagMapper.deleteById(id) > 0;
    }

    /**
     * 标签分页
     *
     * @param dto
     * @return
     */
    @Override
    public Result YddTagList(YddTagPageDto dto) {
        if (dto == null){
            return Result.error(MessageConstant.UNKNOWN_ERROR);
        }
        IPage<YddTag> page = new Page<>(dto.getPage(),dto.getLimit());

        LambdaQueryWrapper<YddTag> wrapper = new LambdaQueryWrapper<>();

        wrapper.like(YddTag::getTagname,dto.getTagname());

        this.page(page,wrapper);
        YddTagVO vo = YddTagVO.builder()
                .count((int)page.getTotal())
                .totalPages((int)page.getPages())
                .pageSize((int)page.getSize())
                .currentPage((int)page.getCurrent())
                .data(page.getRecords())
                .build();

        return Result.success(vo);
    }


    //添加标签
    @Override
    public boolean addLabel(YddTag yddTag) {
        int rows = yddTagMapper.insert(yddTag);
        return rows > 0;
    }
}

